package com.sodimac.v2s.commands
{
	import com.adobe.cairngorm.commands.ICommand;
	import com.adobe.cairngorm.control.CairngormEvent;
	import com.sodimac.util.alerts.alert;
	import com.sodimac.util.commons.UtilString;
	import com.sodimac.util.commons.UtilXml;
	import com.sodimac.v2s.business.PicDelegate;
	import com.sodimac.v2s.events.cargarPicEvent;
	import com.sodimac.v2s.model.ComprasModelLocator;
	import com.sodimac.v2s.vo.ProductoPicVO;
	
	import mx.collections.ArrayCollection;
	import mx.rpc.IResponder;
	
	public class obtenerPicCommand implements ICommand, IResponder
	{
		private var modelo:ComprasModelLocator = ComprasModelLocator.getInstance();
		private var strMetodo:String ="";

		
		public function execute(event:CairngormEvent):void
		{
			var delegate:PicDelegate = new PicDelegate(this);
			var picEvt:cargarPicEvent = cargarPicEvent(event);
			strMetodo = picEvt.metodo;
			trace("en  obtenerPicCommand.execute metodo=[" + strMetodo + "]");
			
			if (UtilString.equalsIgnoreCase(strMetodo, "ConsultaProblemasPIC"))
			{
				delegate.ConsultaProblemasPIC(modelo.cabecera, picEvt.idEmpresa, picEvt.idPedidoCorp);
			}
			
			
			
		}
		
        public function result(obj: Object): void
        {            
			var xml:XML = new XML(obj.result);
			var xmlList:XMLList;
			xml = UtilXml.removeNamespacesFromXML(xml);
			//trace(xml.toXMLString());
			xmlList = xml.children();
			
			var result:Number = Number(xmlList.cabecera.@id);
			var glosa:String =  xmlList.cabecera.@glosa;
			trace("WS ProformaInvoiceConjunta["+strMetodo+"] response id=" +result);

	  	      switch (result){
	  	      case 0:   //Ok
	  	      			var xmlProblemas:XMLList;
	  	      		//	var xmlprodCorp:XMLList; 
	  	      		//	var xmlprodNac:XMLList;
	  	      			
						if (UtilString.equalsIgnoreCase(strMetodo, "ConsultaProblemasPIC"))
						{
							xmlProblemas = xmlList.payload.maestroProblema;
						//	xmlprodCorp = xmlList.payload.productosCorp;
						//	xmlprodNac = xmlList.payload.productosNac;
							procesaProductosPIC(xmlProblemas);
						} 
	  	      			break;
	  	      			
	  	      case 1:   //Error
	  	      			alert.error("Ha ocurrido un error:\n\n"+  glosa);
	  	      			break;
	  	      			
	  	      default:  //reintentar
	  	      	  	     alert.info("Problemas con respuesta del servicio, " + 
									"favor reintente mas tarde.\n\n"+ glosa);
	  	      			break;                  	      						
	  	      }


        }
                
        public function fault(obj: Object): void
        {
        	alert.error("Ha Ocurrido un Error al consultar Productos.");
        }		




		private function procesaProductosPIC(problemas:XMLList):void 
		{
			var problArr:ArrayCollection = new ArrayCollection();
			//var prodPicArr:ArrayCollection = new ArrayCollection();
			var tmpProd:ProductoPicVO;
			
			//add opción vacía
			var tmp:Object = new Object();
            tmp.id = 0;
            tmp.desc = String("  ");
			problArr.addItem(tmp);			
			
			for each(var problema:XML in problemas.itemProblema)			
			{
				 tmp = new Object();
                 tmp.id = Number(problema.@id);
                 tmp.desc = String(problema.description);
                 
				 problArr.addItem(tmp);
            }
            
            modelo.problemasData = problArr;
            trace('--> procesaProductosPIC :  arreglo Problema con datos');			

			
//			for each(var producto:XML in productosCorp.productoCorp)			
//			{
//                 tmpProd = new ProductoPicVO();
//  				 tmpProd.vin = producto.vin;
//  				 tmpProd.vc_vin = producto.vc_vin;
//                 tmpProd.ean = producto.ean;
//                 tmpProd.desc = producto.description;
//                 tmpProd.moq = producto.moq;
//                 tmpProd.moneda = producto.moneda;
//                 tmpProd.unit_price = producto.unitPrice;
//                 tmpProd.unit_kgs = producto.unitKgs;
//                 tmpProd.unit_cbm = producto.unitCbm;
//                 tmpProd.tquantity = producto.totQuantity;
//                 tmpProd.tprice = tmpProd.tquantity * tmpProd.unit_price;
//                 tmpProd.tkgs   = tmpProd.tquantity * tmpProd.unit_kgs;
//                 tmpProd.tcbm   = tmpProd.tquantity * tmpProd.unit_cbm;
//                 tmpProd.problemName =UtilString.trimString(producto.descProblem);
//                 tmpProd.vquantity = producto.vendTotQnty;
//                 tmpProd.original_vquantity = producto.vendTotQnty;
//                 tmpProd.vprice = producto.vendUnitPrice;
//                 tmpProd.original_vprice = producto.vendUnitPrice;
//                 tmpProd.pais = "";
//                 tmpProd.sku = ""; 
//                 
//				 prodPicArr.addItem(tmpProd);
//            }
            
            
//			for each(var prod:XML in productosNac.productoNac)			
//			{
//                 tmpProd = new ProductoPicVO();
//  				 tmpProd.vin = prod.vin;
//  				 tmpProd.vc_vin = prod.vin;
//                 tmpProd.ean = prod.ean;
//                 tmpProd.desc = prod.description;
//                 tmpProd.moq = prod.moq;
//                 tmpProd.moneda = prod.moneda;
//                 tmpProd.unit_price = prod.unitPrice;
//                 tmpProd.unit_kgs = prod.unitKgs;
//                 tmpProd.unit_cbm = prod.unitCbm;
//                 tmpProd.tquantity = prod.totQuantity;
//                 tmpProd.tprice = tmpProd.tquantity * tmpProd.unit_price;
//                 tmpProd.tkgs   = tmpProd.tquantity * tmpProd.unit_kgs;
//                 tmpProd.tcbm   = tmpProd.tquantity * tmpProd.unit_cbm;
//                 tmpProd.problemName = UtilString.trimString(prod.descProblem); 
//                 tmpProd.vquantity = prod.vendTotQnty;
//                 tmpProd.original_vquantity = prod.totQuantity;
//                 tmpProd.vprice = prod.vendUnitPrice;
//                 tmpProd.original_vprice = prod.vendUnitPrice;
//                 tmpProd.pais = prod.pais;    //se requiere al grabar
//                 tmpProd.sku = prod.sku;    //se requiere al grabar 
//                 
//				 prodPicArr.addItem(tmpProd);
//            }            
//            
//            modelo.problemasData = problArr;
//            modelo.prodPicData = prodPicArr;
//            trace('--> procesaProductosPIC con datos');
		}	

		
	}
}
        